package com.icss.ah.base.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory; 

public class LogUtils {
	private final static Logger iLog = LoggerFactory.getLogger("I");  
	private final static Logger eLog = LoggerFactory.getLogger("E");  
	public static void info(String msg) {
		if(iLog != null) {
			iLog.info(msg);
		}
	}
	public static void error(Throwable t) {
		if(eLog != null) {
			eLog.error(t.getMessage(), t);
		}
	}
	public static void error(String msg) {
		if(eLog != null) {
			eLog.error(msg);
		}
	}
	public static void error(String msg, Throwable t) {
		if(eLog != null) {
			eLog.error(msg + " > " + t.getMessage(), t);
		}
	}
	public static void bean(Object bean) {
		if(iLog != null) {
			StringBuffer sb = new StringBuffer();
			if (bean == null) {
				sb.append("对象为空");
			} else {
				try {
					Class<?> clazz = bean.getClass();
					sb.append(clazz.getName() + "\n公共成员变量 > ");
					Field[] fs = clazz.getFields();
					for (int i = 0; i < fs.length; i++) {
						Field f = fs[i];
						sb.append(f.getName() + ": " + f.get(bean) + "; ");
					}
					sb.append("\n公共方法 > ");
					Method[] ms = clazz.getMethods();
					for (int i = 0; i < ms.length; i++) {
						Method m = ms[i];
						if ((!"void".equals(m.getReturnType().getName()) && !"Class".equals(m.getName().substring(3)) && m.getName().startsWith("get") && m.getParameterTypes().length == 0)) {
//							if (m.invoke(bean).getClass().toString().indexOf("ArrayList") > 0) {
//								ArrayList<?> list = (ArrayList<?>) m.invoke(bean);
//								sb.append("\n" + m.getName().substring(3) + ": [");
//								for (int l = 0; l < list.size(); l++) {
//									sb.append("\n\t{");
//									Object sub = list.get(l);
//									Class<?> subClazz = sub.getClass();
//									Method[] subMs = subClazz.getMethods();
//									for (int subi = 0; subi < subMs.length; subi++) {
//										Method subm = subMs[subi];
//										if ((!"void".equals(subm.getReturnType().getName()) && !"Class".equals(subm.getName().substring(3)) && subm.getName().startsWith("get") && subm.getParameterTypes().length == 0)) {
//											sb.append("\n\t\t" + subm.getName().substring(3) + ": " + subm.invoke(sub) + "; ");
//										}
//									}
//									sb.append("}");
//								}
//								sb.append("]");
//							} else {
								sb.append("\n" + m.getName().substring(3) + ": " + m.invoke(bean) + "; ");
//							}
						}
					}
				} catch (Exception e) {
					error(e);
				}
			}
			iLog.info(sb.toString());
		}
	}
}
